home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 1999 #6 / 1999 CD 6 (Red).iso / Strategy / warzone / disk1 / data1.cab / Program_Executable_Files / script / fastplay / s-demo.slo < prev    next >
Encoding:
Text File  |  1998-12-03  |  15.5 KB  |  562 lines

  1. // SCRIPT file for Cam 1-2
  2.  
  3. /* General Values */
  4. public        int        player;
  5. public        int        enemy1;
  6. public        int        enemy2;
  7. private        int        numart;
  8. public        int        pow1, pow2;
  9.  
  10. /* structure limit stuff */
  11. public    STRUCTURESTAT        factory, research, oilDerrick, powerGen;
  12. //public    STRUCTURESTAT        powerModuleHack;
  13. public    STRUCTURESTAT        command;
  14. public    INT            numPow, numExt, numFac, numRes;
  15.  
  16. /* Win or lose */
  17. public        SOUND        wonSnd;
  18. public        SOUND        lostSnd;
  19. public        LEVEL        NextLev;
  20. private        GROUP        allPlayer, nearLZ;
  21. private        int        totDroids;
  22.  
  23. /* Starting Technology */
  24. public        int        numtecE1;
  25. public        RESEARCHSTAT    tecE1[3];
  26. private        int        tecCount;
  27.  
  28. /* Base Under Attack Stuff */
  29. private        STRUCTURE    hitStruc;
  30. private        BASEOBJ        attackerObj;
  31. private        int        t;
  32. public        SOUND        attackSnd1;
  33. public        SOUND        LZSnd;
  34.  
  35. /* LZ Message */
  36. public        INTMESSAGE        LZ_MSG;
  37. public        SOUND            LZComp, LZClear, reinfSnd;
  38. public        INTMESSAGE        obj1;
  39. public        TEXTSTRING        RetLZMsg;
  40. public        INT            ReinforceTime;
  41.  
  42. /* Transport Entry/Exit coords */
  43. public        int        entryX, entryY, exitX, exitY;
  44.  
  45. /* Briefing stuff */
  46. public        INTMESSAGE        endMsg, winMsg;
  47. public        INTMESSAGE        InFlight;
  48. public        INTMESSAGE        MissionBrief;    //, MissionBrief2;
  49. public        SOUND            incomingSnd;
  50. private        BOOL            brief2Flag;
  51.  
  52. /* Proximity: Resources */
  53. /*
  54. public        FEATURE        res1;
  55. public        INTMESSAGE    res1Msg;
  56. public        SOUND        res1Snd;
  57. public        STRUCTURESTAT    derrick;
  58. private        int        res1x,res1y;    //temp values to cope with oil disappearing!
  59. */
  60.  
  61. /* Proximity: Artifacts */
  62. public        FEATURESTAT    crate;
  63.  
  64. public        int        art1X, art1Y;
  65. public        STRUCTURE    art1Get;
  66. public        SOUND        art1Snd1, art1Snd2;
  67. //public        INTMESSAGE    art1Msg;
  68. public        RESEARCHSTAT    art1Comp;
  69. private        FEATURE        art1ID;
  70.  
  71. public        int        art2X, art2Y;
  72. public        STRUCTURE    art2Get;
  73. public        SOUND        art2Snd1, art2Snd2;
  74. //public        INTMESSAGE    art2Msg;
  75. public        RESEARCHSTAT    art2Comp;
  76. private        FEATURE        art2ID;
  77.  
  78. public        int        art3X, art3Y;
  79. public        STRUCTURE    art3Get;
  80. public        SOUND        art3Snd1, art3Snd2;
  81. //public        INTMESSAGE    art3Msg;
  82. public        RESEARCHSTAT    art3Comp;
  83. private        FEATURE        art3ID;
  84. /* player Bonus Research topics given at end of mission */
  85. public    int            numResP0;
  86. public    RESEARCHSTAT        resP0[20];    //need to be declared with value >= numResP0, numResP1, etc.
  87. private    INT            count;
  88.  
  89. /* Proximity: Enemy */
  90. public        STRUCTURE    enm1;
  91. public        STRUCTUREID    enm1ID;
  92. public        INTMESSAGE    enm1Msg;
  93. public        SOUND        enm1Snd1;
  94. public        SOUND        enm1Snd2;
  95.  
  96. public        STRUCTURE    enm2;
  97. public        STRUCTUREID    enm2ID;
  98. public        INTMESSAGE    enm2Msg;
  99. public        SOUND        enm2Snd1;
  100. public        SOUND        enm2Snd2;
  101.  
  102. //extra blips for guard entrances
  103. public        INTMESSAGE    guard1Msg, guard2Msg;
  104. public        SOUND        guard1Snd1, guard2Snd1, guard1Snd2, guard2Snd2;
  105.  
  106. /* Triggers: Win or Lose */
  107. trigger winLoseTrig(every, 5);
  108.  
  109. /* Triggers: Briefing */
  110. trigger vidEndTrig(CALL_VIDEO_QUIT);
  111.  
  112. /* Triggers: Resource */
  113. /*
  114. trigger res1SeenTrig(droidHasSeen(res1, player), 10);
  115. trigger res1UsedTrig(every, 10);
  116. */
  117.  
  118. /* Triggers: Artifacts */
  119. //trigger art1SeenTrig(droidHasSeen(art1ID, player), 5);
  120. trigger art1TakeTrig(droidInRange(player, art1X, art1Y, 200), 5);
  121. trigger art1PlaceTrig((art1Get==NULLOBJECT), 5);
  122.  
  123. //trigger art2SeenTrig(droidHasSeen(art2ID, player), 5);
  124. trigger art2TakeTrig(droidInRange(player, art2X, art2Y, 200), 5);
  125. trigger art2PlaceTrig((art2Get==NULLOBJECT), 5);
  126.  
  127. trigger art3TakeTrig(droidInRange(player, art3X, art3Y, 200), 5);
  128. trigger art3PlaceTrig((art3Get==NULLOBJECT), 5);
  129.  
  130. /* Triggers: Enemy */
  131. trigger enm1SeenTrig(seenStructInArea(player, enemy1, FALSE, 3136, 1728, 5440, 2624), 10);
  132. trigger enm1DeadTrig(numStructsButNotWallsInArea(enemy1, 3136, 1728, 5440, 2624) == 0, 20);
  133.  
  134. trigger enm2SeenTrig(seenStructInArea(player, enemy1, FALSE, 1600, 6464, 2368, 7232), 10);
  135. trigger enm2DeadTrig(numStructsButNotWallsInArea(enemy1, 1600, 6464, 2368, 7232) == 0, 20);
  136.  
  137. trigger guard1SeenTrig(seenStructInArea(player, enemy1, FALSE, 2368, 5568, 3392, 6592), 10);
  138. trigger guard1DeadTrig(numStructsButNotWallsInArea(enemy1, 2368, 5568, 3392, 6592) == 0, 20);
  139.  
  140. trigger guard2SeenTrig(seenStructInArea(player, enemy1, FALSE, 4544, 2880, 5924, 4928), 10);
  141. trigger guard2DeadTrig(numStructsButNotWallsInArea(enemy1, 4544, 2880, 5924, 4928) == 0, 20);
  142.  
  143. /* part 2 briefing */
  144. trigger brief2Trig(brief2Flag, 15);
  145. trigger retLZTrig(numart == 3, 20);
  146.  
  147. //LZ contains enemies?
  148. //trigger LZNoGoTrig((objectInArea(enemy1, 6000, 7000, 7000, 8000)), 35);
  149. //LZ clear of enemies?
  150. //trigger LZ_OKTrig((not objectInArea(enemy1, 6000, 7000, 7000, 8000)), 35);
  151.  
  152. trigger gameLostTrig    (every, 20);
  153.  
  154. trigger researchTrig(every, 1200);    //2 minute delay between topics completed
  155.  
  156. event startEvnt(CALL_VIDEO_QUIT)    //(CALL_GAMEINIT)
  157. {
  158.     //setLandingZone(LZ_X1, LZ_Y1, LZ_X2, LZ_Y2);
  159.     //centreView(enm1);        //temporary solution for thin maps
  160.     removeMessage(InFlight, MISS_MSG, 0);
  161.     centreViewPos(52*128, 55*128);
  162. //set scroll limits
  163.     setScrollParams(0, 0, 64, 64);            //limit scroll
  164. //set zoom Level 64x64
  165.     setRadarZoom(1);
  166. //call in transport
  167.     flyTransporterIn(player, entryX, entryY);
  168.     setTransporterExit(player, exitX, exitY);
  169. //make sure all buttons available/unavailable
  170.     //removeReticuleButton(DESIGN);
  171.     //removeReticuleButton(BUILD);
  172. //set starting power
  173.     setPowerLevel(pow1, enemy1);
  174.     setPowerLevel(pow2, enemy2);
  175.     addMessage(MissionBrief, MISS_MSG, 0, false);
  176.     flashOff(INTELMAP);
  177.  
  178. //Blip Given at start
  179.     addMessage(obj1, PROX_MSG, player, false);
  180. //allow to build stuff
  181.     setStructureLimits (powerGen,numPow,0);
  182.     setStructureLimits (oilDerrick,numExt,0);
  183.     setStructureLimits (research,numRes,0);
  184.     setStructureLimits (factory,numFac,0);
  185.     setStructureLimits(command, 0, player);
  186.     enableStructure(command, player);
  187.     enableStructure(powerGen,0);
  188.     enableStructure(oilDerrick,0);
  189.     enableStructure(research,0);
  190.     enableStructure(factory,0);
  191.     //enableStructure(powerModuleHack, 0);
  192. //give first topic for enemy
  193.     completeResearch(tecE1[tecCount], enemy1);
  194.     tecCount = tecCount + 1;
  195. //set transport time
  196.     setReinforcementTime(ReinforceTime);
  197. //set up resource coords (since oil pools diappear when built on!!!)
  198.     //res1x=res1.x;
  199.     //res1y=res1.y;
  200.     setEventTrigger(startEvnt, inactive);
  201. }
  202.  
  203. event flightEvnt(CALL_GAMEINIT)
  204. {
  205.     addMessage(InFlight, MISS_MSG, 0, true);
  206.     setEventTrigger(flightEvnt, inactive);
  207. }
  208.  
  209. /*Events: */
  210.  
  211. /* Events: Artifacts */
  212. event art1TakeEvnt(inactive)
  213. {
  214.     numart=numart+1;
  215.     brief2Flag = TRUE;
  216.     destroyFeature(art1ID);
  217.     playSound(art1Snd2, player);
  218.     removeMessage(obj1, PROX_MSG, player);
  219.     //removeMessage(art1Msg, PROX_MSG, player);
  220.     enableResearch(art1Comp, player);
  221.     setEventTrigger(art1TakeEvnt, inactive);
  222. }
  223. /*
  224. event art1SeenEvnt(inactive)
  225. {
  226.     addMessage(art1Msg, PROX_MSG, player, false);
  227.     playSound(art1Snd1, player);
  228.     pause(40);
  229.     setEventTrigger(art1TakeEvnt, art1TakeTrig);
  230.     setEventTrigger(art1SeenEvnt, inactive);
  231. }
  232. */
  233. event art1PlaceEvnt(art1PlaceTrig)
  234. {
  235.     //place artifact crate, and allow check for prox
  236.     art1ID=addFeature(crate, art1X, art1Y);
  237.     //setEventTrigger(art1SeenEvnt, art1SeenTrig);
  238.     setEventTrigger(art1TakeEvnt, art1TakeTrig);
  239.     setEventTrigger(art1PlaceEvnt, inactive);
  240. }
  241.  
  242. event art2TakeEvnt(inactive)
  243. {
  244.     numart=numart+1;
  245.     destroyFeature(art2ID);
  246.     playSound(art2Snd2, player);
  247.     //removeMessage(art2Msg, PROX_MSG, player);
  248.     enableResearch(art2Comp, player);
  249.     setEventTrigger(art2TakeEvnt, inactive);
  250. }
  251. /*
  252. event art2SeenEvnt(inactive)
  253. {
  254.     addMessage(art2Msg, PROX_MSG, player, false);
  255.     playSound(art2Snd1, player);
  256.     pause(40);
  257.     setEventTrigger(art2TakeEvnt, art2TakeTrig);
  258.     setEventTrigger(art2SeenEvnt, inactive);
  259. }
  260. */
  261. event art2PlaceEvnt(art2PlaceTrig)
  262. {
  263.     //place artifact crate, and allow check for prox
  264.     art2ID=addFeature(crate, art2X, art2Y);
  265.     //setEventTrigger(art2SeenEvnt, art2SeenTrig);
  266.     setEventTrigger(art2TakeEvnt, art2TakeTrig);
  267.     setEventTrigger(art2PlaceEvnt, inactive);
  268. }
  269.  
  270. event art3TakeEvnt(inactive)
  271. {
  272.     numart=numart+1;
  273.     destroyFeature(art3ID);
  274.     playSound(art3Snd2, player);
  275.     //removeMessage(art3Msg, PROX_MSG, player);
  276.     enableResearch(art3Comp, player);
  277.     setEventTrigger(art3TakeEvnt, inactive);
  278. }
  279.  
  280. event art3PlaceEvnt(art3PlaceTrig)
  281. {
  282.     //place artifact crate, and allow check for prox
  283.     art3ID=addFeature(crate, art3X, art3Y);
  284.     //setEventTrigger(art3SeenEvnt, art3SeenTrig);
  285.     setEventTrigger(art3TakeEvnt, art3TakeTrig);
  286.     setEventTrigger(art3PlaceEvnt, inactive);
  287. }
  288.  
  289. /* Events: Enemies */
  290. event enm1DeadEvnt(inactive)
  291. {
  292.     killStructsInArea(enemy1, REF_WALL, 3136, 1728, 5440, 2624, TRUE, TRUE);    //remove walls and features in base
  293.     killStructsInArea(enemy1, REF_WALLCORNER, 3136, 1728, 5440, 2624, TRUE, FALSE);    //remove corner walls in base
  294.     removeMessage(enm1Msg, PROX_MSG, player);
  295.     playSound(enm1Snd2, player);
  296.     setEventTrigger(enm1DeadEvnt, inactive);
  297. }
  298.  
  299. event enm1SeenEvnt(enm1SeenTrig)
  300. {
  301.     brief2Flag = TRUE;
  302.     pause(20);
  303.     addMessage(enm1Msg, PROX_MSG, player, false);
  304.     playSound(enm1Snd1, player);
  305.     setEventTrigger(enm1DeadEvnt, enm1DeadTrig);
  306.     setEventTrigger(enm1SeenEvnt, inactive);
  307. }
  308.  
  309. event enm2DeadEvnt(inactive)
  310. {
  311.     killStructsInArea(enemy2, REF_WALL, 1600, 6464, 2368, 7232, TRUE, TRUE);    //remove walls and features in base
  312.     killStructsInArea(enemy2, REF_WALLCORNER, 1600, 6464, 2368, 7232, TRUE, FALSE);    //remove corner walls in base
  313.     removeMessage(enm2Msg, PROX_MSG, player);
  314.     playSound(enm2Snd2, player);
  315.     setEventTrigger(enm2DeadEvnt, inactive);
  316. }
  317.  
  318. event enm2SeenEvnt(enm2SeenTrig)            //base 2 seen
  319. {
  320.     addMessage(enm2Msg, PROX_MSG, player, false);
  321.     playSound(enm2Snd1, player);
  322.     setEventTrigger(enm2DeadEvnt, enm2DeadTrig);
  323.     setEventTrigger(enm2SeenEvnt, inactive);
  324. }
  325.  
  326. //Extra blips for guard entrances
  327. event guard1DeadEvnt(inactive)
  328. {
  329.     killStructsInArea(enemy1, REF_WALL, 2368, 5568, 3392, 6592, TRUE, TRUE);    //remove walls and features in base
  330.     killStructsInArea(enemy1, REF_WALLCORNER, 2368, 5568, 3392, 6592, TRUE, FALSE);    //remove corner walls in base
  331.     removeMessage(guard1Msg, PROX_MSG, player);
  332.     //playSound(guard1Snd2, player);
  333.     setEventTrigger(guard1DeadEvnt, inactive);
  334. }
  335.  
  336. event guard1SeenEvnt(guard1SeenTrig)
  337. {
  338.     addMessage(guard1Msg, PROX_MSG, player, false);
  339.     playSound(guard1Snd1, player);
  340.     setEventTrigger(guard1DeadEvnt, guard1DeadTrig);
  341.     setEventTrigger(guard1SeenEvnt, inactive);
  342. }
  343.  
  344. event guard2DeadEvnt(inactive)
  345. {
  346.     killStructsInArea(enemy2, REF_WALL, 4544, 3392, 5924, 4928, TRUE, TRUE);    //remove walls and features in base
  347.     killStructsInArea(enemy2, REF_WALLCORNER, 4544, 3392, 5924, 4928, TRUE, FALSE);    //remove corner walls in base
  348.     removeMessage(guard2Msg, PROX_MSG, player);
  349.     //playSound(guard2Snd2, player);
  350.     setEventTrigger(guard2DeadEvnt, inactive);
  351. }
  352.  
  353. event guard2SeenEvnt(guard2SeenTrig)            //base 2 seen
  354. {
  355.     addMessage(guard2Msg, PROX_MSG, player, false);
  356.     playSound(guard2Snd1, player);
  357.     setEventTrigger(guard2DeadEvnt, guard2DeadTrig);
  358.     setEventTrigger(guard2SeenEvnt, inactive);
  359. }
  360.  
  361. /* Disabled for demo
  362. event brief2Evnt(brief2Trig)
  363. {
  364.     playSound(incomingSnd, player);
  365.     pause(20);
  366.     addMessage(MissionBrief2, MISS_MSG, 0, true);
  367.     setEventTrigger(brief2Evnt, inactive);
  368. }
  369. */
  370.  
  371. event giveLZmess(inactive)    //don't use for demo!
  372. //(retLZTrig)
  373. {
  374. //add LZ blip and WAV message
  375.     addMessage(LZ_MSG, PROX_MSG, player, false);
  376.     addConsoleText(RetLZMsg, player);
  377.     playSound(LZSnd, player);
  378.     setEventTrigger(giveLZmess, inactive);
  379. }
  380.  
  381. //event wonYetEvnt;
  382. event wonYetLZEvnt;
  383. event timeUp;
  384.  
  385. /* Events: Win or Lose */
  386.  
  387. event nextLevEvnt(inactive)        //assumes victory already checked
  388. {
  389.     //playSound(wonSnd,0);
  390.     //pause(20);
  391.  
  392.     // give bonus research (if req'd)
  393.     count = 0;
  394.     while (count < numResP0)
  395.     {
  396.         enableResearch(resP0[count], 0);
  397.         count = count +1;
  398.     }
  399.  
  400.     gameLevel=gameLevel+1;        //flag next part of map
  401.     setLandingZone(10, 51, 12, 53);
  402. //enable research
  403.     enableResearch(art1Comp, player);
  404.     removeMessage(MissionBrief, MISS_MSG, player);
  405.     //startMission(BETWEEN, NextLev);
  406.     //End game here for now! (don't try next mission)
  407.     addMessage(winMsg, MISS_MSG, 0, true);
  408.     pause(10);
  409.     gameOver(true);
  410.  
  411.     setEventTrigger(nextLevEvnt, inactive);
  412. }
  413.  
  414. event gameLost(inactive)
  415. {
  416.     addMessage(endMsg, MISS_MSG, 0, true);
  417.     pause(10);
  418.     gameOver(false);
  419.     setEventTrigger(gameLost, inactive);
  420. }
  421.  
  422. event    lostYetEvnt(winLoseTrig)
  423. {
  424.     if (not anyDroidsLeft(player))
  425.     {
  426.         if (not anyStructButWallsLeft(player))
  427.         {
  428.             //setEventTrigger(wonYetEvnt,inactive);
  429.             setEventTrigger(wonYetLZEvnt, inactive);
  430.             setEventTrigger(timeUp, inactive);
  431.             //playSound(lostSnd,0);
  432.             //pause(20);
  433.             //addMessage(endMsg, MISS_MSG, 0, true);
  434.             //gameOver(false);
  435.             setEventTrigger(gameLost, gameLostTrig);    //waits 2 seconds before ending
  436.             setEventTrigger(lostYetEvnt, inactive);
  437.         }
  438.  
  439.     }
  440. }
  441.  
  442. //out of time?
  443. event timeUp(CALL_MISSION_TIME)
  444. {
  445.     //setEventTrigger(wonYetEvnt,inactive);
  446.     setEventTrigger(lostYetEvnt,inactive);
  447.     setEventTrigger(wonYetLZEvnt, inactive);
  448.     //playSound(lostSnd,0);
  449.     //pause(20);
  450.     //gameOver(false);
  451.     setEventTrigger(gameLost, gameLostTrig);    //waits 2 seconds before ending
  452.     setEventTrigger(timeUp, inactive);
  453. }
  454.  
  455. event wonYetLZEvnt(retLZTrig)    //triggered when all artifacts picked up
  456. // have all enemies lost yet? FOR DEMO ONLY!
  457. {                                
  458.       if (not anyDroidsLeft(enemy1))
  459.     {
  460.         if (not anyStructButWallsLeft(enemy1))
  461.         {
  462.             setEventTrigger(lostYetEvnt, inactive);
  463.             setEventTrigger(timeUp, inactive);
  464.             setEventTrigger(nextLevEvnt, winLoseTrig);
  465.             //setEventTrigger(wonYetEvnt, inactive);
  466.             setEventTrigger(wonYetLZEvnt, inactive);
  467.         }
  468.     }
  469. }
  470.  
  471. /* not used for demo (need to kill everything!)
  472. event wonYetLZEvnt(winLoseTrig)    //alternate victory condition, got artifact(s) and back at LZ
  473. {
  474.     totDroids = numDroidsInArea(player, 0, 0, 64*128, 64*128);
  475.     if (totDroids == numDroidsInArea(player, 6080, 6464, 7616, 7616))
  476.     {
  477.         if (totDroids!=0)
  478.         {
  479.             if (numart==3)
  480.             {
  481.                 setEventTrigger(lostYetEvnt, inactive);
  482.                 setEventTrigger(timeUp, inactive);
  483.                 setEventTrigger(nextLevEvnt, winLoseTrig);
  484.                 //setEventTrigger(wonYetEvnt, inactive);
  485.                 setEventTrigger(wonYetLZEvnt, inactive);
  486.             }
  487.         }
  488.     }
  489. }
  490. */
  491.  
  492. event cheatEvnt(CALL_MISSION_START)    //cheat button ctrl M
  493. {
  494.     setEventTrigger(nextLevEvnt, winLoseTrig);
  495.     setEventTrigger(cheatEvnt, inactive);
  496. }
  497.  
  498. /* base under attack */
  499. event baseHit(CALL_STRUCT_ATTACKED, selectedPlayer, ref hitStruc, ref attackerObj)
  500. {
  501.     if (t>=20)
  502.     {
  503.         t=0;
  504.         playSoundPos(attackSnd1, player, hitStruc.x, hitStruc.y, hitStruc.z);
  505.     }
  506. }
  507.  
  508. event everySec(every, 10)
  509. {
  510.     t=t+1;
  511. }
  512.  
  513. event seeBaseHit(CALL_MISSION_END)
  514. {
  515. //go to where the structure being attacked is on CTRL B
  516.     if (hitStruc!=NULLOBJECT)
  517.     {
  518.         centreView(hitStruc);
  519.         t=0;            //flag known about!
  520.     }
  521. }
  522.  
  523. /* LZ Compromised DISABLED!
  524. event LZ_OK;
  525. event LZNoGo(LZNoGoTrig)
  526. {
  527. //check LZ area for enemy structures and/or vehicles (in Trigger)
  528.     playSound(LZComp, player);    //"LZ Compromised"
  529. //disallow reinforcements
  530.     setReinforcementTime(18000);    //(set to mission time)
  531. //allow check for clear!
  532.     setEventTrigger(LZ_OK,LZ_OKTrig);
  533.     setEventTrigger(LZNoGo, inactive);
  534. }
  535.  
  536. event LZ_OK(inactive)
  537. {
  538. //check LZ area clear of enemy structures and/or vehicles (in Trigger)
  539.     playSound(LZClear, player);    //"LZ Clear"
  540. //allow reinforcements now base found
  541.     setReinforcementTime(ReinforceTime); //(set back to normal)
  542.     setEventTrigger(LZNoGo, LZNoGoTrig);
  543.     setEventTrigger(LZ_OK, inactive);
  544. }
  545. */
  546. /* Disabled for difficulty check
  547. event researchEvnt(researchTrig)
  548. {
  549. // player specific technology startups
  550.     if (tecCount >= numtecE1)
  551.     {
  552.         setEventTrigger(researchEvnt, inactive);
  553.     }
  554.     else
  555.     {
  556.         completeResearch(tecE1[tecCount], enemy1);
  557.         tecCount = tecCount + 1;
  558.     }
  559. }
  560. */
  561.  
  562.